When a personal computer is turned on, a basic input-output system (BIOS) that is stored in non-volatile solid state memory of the computer is invoked to begin what is known as a “boot” process, in which various initialization chores are undertaken. Among the most important of these chores is the copying of an operating system from disk storage of the computer over into typically a volatile solid state memory, such as DRAM, of the computer, for execution of the operating system by the processor of the computer when the computer is: being used. When the computer is turned off or when it is “re-booted”, the operating system is flushed from the memory. By executing the operating system from the relatively fast memory instead of from the disk, computer operations are accelerated.
In accessing files on HDDs, the files typically are accessed by their logical block addresses (LBA), which are large numbers, e.g., forty eight bits, each of which is associated with a respective data block of a file. The operating system of the host computer generates the LBAs and passes them to the HDD, which determines the actual physical location on disk to store the data and which maintains an internal correlation of LBA to physical location for responding to future read and write LBA-referenced commands from the operating system of the computer.
So that the BIOS code is independent of the specific operating system of a computer, conventionally BIOS has used a single location, such as, e.g., cylinder 0, head 0, record 0, LBA 0 as the starting point from which to copy the operating system during system boot. The present invention understands that while this convention renders BIOS independent of particular operating systems, it restricts the loading of programs from disk during boot prior to loading the operating system, because the LBAs of the non-operating system programs are known only to the operating system, not to BIOS.
As recognized herein, however, it is sometimes desirable to load certain non-operating system programs, such as, e.g., security programs, system management programs, and data recovery programs, from disk to memory independent of or prior to the operating system being loaded into memory. As used herein, “special O.S. program” includes limited operating systems known variously as secure O.S., hypervisor, and service O.S. By “standard” O.S. is meant any O.S. in existence now or hereafter that is used as the standard, or “normal” operating system of the computer.
In any case, such operations may be required in the event that a user forgets a password to permit use of the standard operating system, or in the event that an emergency recovery process is required because of operating system malfunction, or for other reasons. Regardless of the particular reason for their invocation, the present invention further recognizes that these non-operating system programs cannot simply be moved onboard to non-volatile BIOS memory such as flash memory because they are too large, and consequently they must be booted from disk, with the attendant difficulty noted above regarding loading them prior to operating system boot. With these critical observations in mind, the invention herein is provided.